1. Field of the Invention
The present invention relates to application deployment and more particularly to script driven deployment of composite applications.
2. Description of the Related Art
Component-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. An individual component is a software package or a module that encapsulates a set of related functions or data. All system processes are placed into separate components so that all of the data and functions inside each component are semantically related. Because of this principle, it is often said that components are modular and cohesive. With regard to system-wide co-ordination, components communicate with each other via interfaces. When a component offers services to the rest of the system, it adopts a provided interface which specifies the services that can be utilized by other components and how. This interface can be seen as a signature of the component—the client does not need to know about the inner workings of the component (implementation) in order to make use of it. This principle results in components referred to as encapsulated.
Components generally execute within a container provided by an application server. Different components can depend upon the presence of other components and resourced within a container. Consequently, deploying a component based application to a target environment mandates the presence of all dependencies requisite to the operation of the component based application, and also the proper selection of a container version, and yet further a proper configuration of the container and perhaps the application server and supporting host computer, itself. The complexity then of deploying a component based application to a target environment far exceeds that of the deployment of traditional binaries to a personal computer or server.
To address the complex nature of deploying a component based application to multiple different target environments, developers often formulate deployment scripts intended to partially automate the deployment process. The development of a deployment script, in of itself, can be complicated and costly, however. Further, the development of the deployment script can be closely related to the subject component based application to be deployed and thus, every application to be deployed enjoys its own, custom developed deployment script—an enormously inefficient outcome.